'use strict';
exports.main = async (event, context) => {
	
	// 前端提交上来的数据都放在了event里
	// 如果前端调用云函数传的 data: { _id: 1 }
	// 则这里就可以event._id获取到该值
	
	const action = event.action;
	if (!action || action.length < 1) {
		return { msg: '缺少action参数' };
	}
	
	// 连接数据库
	const db = uniCloud.database()
	// 选择数据库中的表
	const collecation = db.collection("tasks")
	
	// 根据action来判断请求是什么操作
	switch (action){
		
		// 如果action == 'add' 就是新增任务
		case 'add':
			// 组装保存的数据
			// 注意_id是mongodb（一种数据库）自动生成的，
			// 因此在组装数据的时候不需要加入_id
			const data = {
				title: event.title,
				content: event.content,
				status: 0,
				create_time: getNowTime()
			}
			// add方法直接保存数据
			const addResult = await collecation.add(data)
			// 将返回的数据直接响应给前端
			return addResult
			break;
			
		// 如果action == 'delete' 就是删除任务
		case 'delete':
			// 通过where方法找到对应_id的数据，并用remove()方法删除
			const delResult = await collecation.where({_id: event._id}).remove()
			//返回数据给客户端
			return delResult
			break;
			
		// 如果action == 'update' 就是更新（这里只演示更新状态）
		case 'update':
			// 通过where方法找到对应_id的数据
			// 并用update()方法更新 status字段，status的值也是前端提交上来的
			const updateResult = await collecation.where({_id: event._id}).update({
				status: event.status
			})
			//返回数据给客户端
			return updateResult
			break;
			
		// 如果action == 'list' 就是获取任务列表	
		case 'list':
			// 直接通过get()方法获取所有任务数据
			const listResult = await collecation.get()
			// listResult.data就是任务数组
			return listResult.data
			break;
		default:
			return  { msg: '无效的action参数' };
	}
	
	
};

//==============================================================
//                以下为工具函数
//==============================================================
//获取当前时间
function getNowTime() {
    var date = new Date();
    //年 getFullYear()：四位数字返回年份
    var year = date.getFullYear();  //getFullYear()代替getYear()
    //月 getMonth()：0 ~ 11
    var month = date.getMonth() + 1;
    //日 getDate()：(1 ~ 31)
    var day = date.getDate();
    //时 getHours()：(0 ~ 23)
    var hour = date.getHours();
    //分 getMinutes()： (0 ~ 59)
    var minute = date.getMinutes();
    //秒 getSeconds()：(0 ~ 59)
    var second = date.getSeconds();

    var time = '当前时间是：' + year + '-' + addZero(month) + '-' + addZero(day) + ' ' + addZero(hour) + ':' + addZero(minute) + ':' + addZero(second);
    return time;
}


//小于10的拼接上0字符串
function addZero(s) {
    return s < 10 ? ('0' + s) : s;
}